<?php
class Category {
	/**
	 * Vytvoří novou kategorii
	 * @param $nazev
	 * @param $id rodičovské kategorie
	 */
	function newCategory($nazev, $parent) {
		$nazev = MySQLData($nazev);
		$parent = MySQLData($parent);
		if (empty($parent)) {
			$parent = null;
		}
		$sql = "INSERT INTO categories (parent, name) VALUES ('$parent', '$nazev')";
		mysql_query($sql);
	}
	
	/**
	 * Vrátí dvojrozměrné pole se všemi kategoriemi
	 * První rozměr je id kategorie
	 * V druhém rozměru je název, id rodičovské kategorie a opět id
	 * @return array
	 */
	function getCategories() {
		$categories = array();
		$sql = "SELECT * FROM categories";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_assoc($ps)){
			$categories[$a["id"]] = array();
			$categories[$a["id"]]["nazev"] = $a["name"];
			$categories[$a["id"]]["parent"] = $a["parent"];
			$categories[$a["id"]]["id"] = $a["id"];
		}
		return $categories;
	}
	
	/**
	 * Vrátí kategorii podle id
	 * @param $id
	 * @return array
	 */
	function getCategory($id) {
		$category = array();
		$id = MySQLData($id);
		$sql = "SELECT * FROM categories WHERE id = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_assoc($ps)){
			$category["nazev"] = $a["name"];
			$category["parent"] = $a["parent"];
			$category["id"] = $a["id"];
		}
		return $category;
	}
	
	/**
	 * Podle id vrátí název kategorie
	 * @param $id
	 * @return string název
	 */
	function getName($id) {
		$id = MySQLData($id);
		$sql = "SELECT name FROM categories WHERE id = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_row($ps)){
			return $a[0];
		}
	}
	
	/**
	 * Vrátí true, pokud má kategorie nějaké potomky
	 * @param $id
	 * @return bool
	 */
	function hasChildren($id) {
		$id = MySQLData($id);
		$pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM categories WHERE parent = '$id'"), 0);
		if ($pocet > 0) {
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * Vrátí potomky kategorie
	 * @param $id
	 * @return array
	 */
	function getChildren($id) {
		$categories = array();
		$id = MySQLData($id);
		$sql = "SELECT id FROM categories WHERE parent = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_row($ps)){
			$categories[] = self::getCategory($a[0]);
		}
		return $categories;
	}
	
	/**
	 * Vrátí pole s ids podkategorií
	 * @param $id
	 * @return array
	 */
	function getChildrensIds($id) {
		$categories = array();
		$id = MySQLData($id);
		$sql = "SELECT id FROM categories WHERE parent = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_row($ps)){
			$categories[] = $a[0];
		}
		return $categories;
	}
	
	/**
	 * Vrátí true. pokud má kategorie nějakou rodičovskou kategorii
	 * @param $id
	 * @return bool
	 */
	function hasParent($id) {
		$id = MySQLData($id);
		$sql = "SELECT parent FROM categories WHERE id = '$id'";
		$ps = mysql_query($sql);
		while ($a = mysql_fetch_row($ps)){
			$parent = $a[0];
		}
		if($parent != 0){
			return true;
		}else{
			return false;
		}
	}
}
?>